package br.com.unifebe.tcc.UTILS;

import javax.smartcardio.CommandAPDU;


public final class ComandosAPDU {

	final static byte[] AID_IDENTIFICACAO = new byte[]{ 
		(byte)0x49, (byte)0x64, (byte)0x65, 
		(byte)0x6E, (byte)0x74, (byte)0x69, (byte)0x66, (byte)0x69, 
		(byte)0x63, (byte)0x61, (byte)0x63, (byte)0x61, (byte)0x6F 
	};

	
//	final byte[] UPLOAD_CAP = new byte[]{ 
//			(byte)0x80, (byte)0xE6, (byte)0x02, (byte)0x00, (byte)0x14, 
//			(byte)0x07, (byte)0x63, (byte)0x6C, (byte)0x69, (byte)0x65, 
//			(byte)0x6E, (byte)0x74, (byte)0x65, (byte)0x08, (byte)0xA0, 
//			(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x03, (byte)0x00, 
//			(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00 };
	
//	final byte[] delete = new byte[]{(byte)0x80, (byte)0xE4, (byte)0x00, (byte)0x00, (byte)0x0F, (byte)0x4F };
	
	final byte[] select = new byte[]{ (byte)0x00, (byte)0xA4, (byte)0x04, (byte)0x00 };

	public static CommandAPDU comandoSelect(){

		CommandAPDU comandoSelect = new CommandAPDU (
				//CLA,		 INS, 		 P1,		 P2,			
				(byte)0x00, (byte)0xA4, (byte)0x04, (byte)0x00, 
				//LC, DATA, LE
				AID_IDENTIFICACAO );

		return comandoSelect;
	} 


	public static CommandAPDU getIdCliete(){
		byte[] id = new byte[]{ (byte)0xB0, (byte)0x20, (byte)0x00, (byte)0x00,(byte)0x00 };
		return new CommandAPDU( id );
	}

	public static CommandAPDU getNome(){
		byte[] nome =  new byte[]{ (byte)0xB0, (byte)0x40, (byte)0x00, (byte)0x00,(byte)0x00 };
		return new CommandAPDU( nome );
	}

	public static CommandAPDU getSaldo(){
		byte[] saldo = new byte[]{ (byte)0xB0, (byte)0x70, (byte)0x00, (byte)0x00,(byte)0x00 };
		return new CommandAPDU( saldo );
	}

	public static byte[] getDadosAPDU( String _param ){
		return HexaUtil.stringToByteArray( _param );
	}

	public static CommandAPDU setIdCliente( String string ) {
		byte[] stringHex =	ComandosAPDU.getDadosAPDU( string );
		return	new CommandAPDU ((byte)0xB0, (byte)0x10, (byte)0x00, (byte)0x00, stringHex );
	}
	
	public static CommandAPDU setNome( String string ) {
		byte[] stringHex =	ComandosAPDU.getDadosAPDU( string );
		return	new CommandAPDU ((byte)0xB0, (byte)0x30, (byte)0x00, (byte)0x00, stringHex );
	}
	
	public static CommandAPDU setSaldo( String string ) {
		byte[] stringHex =	ComandosAPDU.getDadosAPDU( string );
		return	new CommandAPDU ((byte)0xB0, (byte)0x50, (byte)0x00, (byte)0x00, stringHex );
	}

}
